热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

表字|小数位_Django学习7添加个人应用(自定义应用页面优化)

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Django学习7--添加个人应用(自定义应用页面优化)相关的知识,希望对你有一定的参考价值。 个人应用页面调整优

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Django学习7 -- 添加个人应用(自定义应用页面优化)相关的知识,希望对你有一定的参考价值。


  个人应用页面调整优化,以 dr_dailyrecord 表例。 

1. 页面显示自定义应用标题

    * 添加templates文件夹,设置settings.py中的templates的指向,参考 Django学习6 -- 添加个人应用(admin页面配置)
    * 也可以在admin.py中配置
        admin.site.site_header = '页面标题' 
        admin.site.site_title = '页面标头'

2. 主页面显示

    * 数据库设计好后,可以通过 python manage.py inspectdb 生成对应的 models,dr_dailyrecord表显示为 DrDailyrecord
    * 在admin.py中注册后,admin主页面显示为Dr Dailyrecords
    * 更改models.py中的类名:DrDailyrecord --> Dailyrecord,更新admin.py注册类,admin主页面显示为Dailyrecords
    * 主页面中,显示所有models.py中定义并在admin.py中注册的类名,整个区域名显示为application名
说明:可使用list传入注册参数,实现多表同时注册

3. 权限
    * Group: 添加group,分配group的权限,即对表的管理权限 add / change / delete / view
    * Users: 添加用户,分配Groups和特殊权限,设置权限后登录用户只能管理分配权限的表
说明:这就是使用admin的原因,经过简单配置后,即可对表进行 CRUD 操作,实现数据基础管理而不用重新设计页面

3. 详细页面显示 -- Dailyrecord

    > 添加页面字段从上到下依次排序显示,默认为普通输入框

    * 自定义添加页面
      1)显示字段类型
           models.py中定义字段显示的类型,即 form(页面)中的field type(字段类型)
           比如:CharField(单行输入框,可设置输入长度和default值)
                      DateField / DateTimeField / TimeField(日期时间输入框,可设置default值)
                      DecimalField / FloatField / FloatField(数字输入框,可定义小数位)
                      ForeignKey(外键字段下拉框显示)  -- 注意: 字段名_id  构成外键名称。比如dr_dailyrecord表要命名用auth_user的username字段做为外键,在models.py中定义为user,因此dr_dailyrecord需要建字段user_id做为引用(原因不明,后面待查) -- models.ForeignKey(User,to_field ='username',on_delete=models.CASCADE)
      2)使用auth_user中的用户信息,将username作为外键

from django.contrib.auth.models import User
class Dailyrecord(models.Model):
models.ForeignKey(User,to_field ='username',on_delete=models.CASCADE)

      3)显示默认登录用户名

class DailyrecordAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == 'user':
kwargs['initial'] = request.user.username # 初始化用户 默认显示当前登录用户
if not request.user.is_superuser and db_field.name == "user":
kwargs["queryset"] = User.objects.filter(username=request.user) # Admin User表,初始化用户 非管理员只显示当前登录用户
return super(DailyrecordAdmin, self).formfield_for_choice_field(db_field, request, **kwargs)

      4)字段页面部局
            使用fields 和 fieldsets调整页面部局

class DailyrecordAdmin(admin.ModelAdmin):
list_display = (
'user',
'workdate',
)
fields = (('user','workdate'),)
fieldsets = (
('Basic','fields':(('user', 'workdate'),)),

    > 结果列表并不能显示所有添加页面操作的数据

    * 自定义显示结果列表
      使用admin.ModelAdmin对字段进行管理:class DailyrecordAdmin(admin.ModelAdmin):
      1)显示字段设置:list_display = (显示字段)   -- 字段名为models.py中的字段定义
      2)显示删选字段:list_filter = (筛选字段名)
      3)显示查询条件:search_fields = (查询字段名)

class DailyrecordAdmin(admin.ModelAdmin):
list_display = (
'user',
'workdate',
)
list_filter = ('workdate','user',)
search_fields = ('user__username',) --> 使用外键,需指向主表字段名

说明:
1)django.pdf: 2.9.3, Customize the admin change list
                           6.5,contrib packages,Admin actions  -- 配置action操作
                           3.4,Working with forms,Field Type / 6.15,Models

2)decimal.InvalidOperation: []
      -- 使用decimal中的最大长度不足,需要调整
3)django.core.exceptions.FieldError: Related Field got invalid lookup: icontains
     -- 表外键查询,需要通过外键关链到主表字段名,即  外键字段名__主表字段名
4)别忘了注册新的admin类:admin.site.register(DailyrecordAdmin)
5)radio list
      * 在models中定义字段 A,取值为choices=???
      * ModelAdmin.radio_fields:radio_fields = "A": admin.VERTICAL 或 admin.HORIZONTAL 
6)Chapter 6:Range fields support the standard lookups: lt, gt, lte and gte. These are not particularly helpful - they compare
the lower bounds first and then the upper bounds only if necessary. This is also the strategy used to order by a range
field. It is better to use the specific range comparison op
    


推荐阅读
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • 1Lock与ReadWriteLock1.1LockpublicinterfaceLock{voidlock();voidlockInterruptibl ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • ScrollView嵌套Collectionview无痕衔接四向滚动,支持自定义TitleView
    本文介绍了如何实现ScrollView嵌套Collectionview无痕衔接四向滚动,并支持自定义TitleView。通过使用MainScrollView作为最底层,headView作为上部分,TitleView作为中间部分,Collectionview作为下面部分,实现了滚动效果。同时还介绍了使用runtime拦截_notifyDidScroll方法来实现滚动代理的方法。具体实现代码可以在github地址中找到。 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • 本文介绍了Java集合库的使用方法,包括如何方便地重复使用集合以及下溯造型的应用。通过使用集合库,可以方便地取用各种集合,并将其插入到自己的程序中。为了使集合能够重复使用,Java提供了一种通用类型,即Object类型。通过添加指向集合的对象句柄,可以实现对集合的重复使用。然而,由于集合只能容纳Object类型,当向集合中添加对象句柄时,会丢失其身份或标识信息。为了恢复其本来面貌,可以使用下溯造型。本文还介绍了Java 1.2集合库的特点和优势。 ... [详细]
author-avatar
a171759015_753
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有